package com.apexsoft.monitor.common.filelist;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.apexsoft.monitor.common.http.HttpHelper;

import java.util.HashMap;
import java.util.Map;

public class GetFileList
{

    public  static JSONArray treeData(String currentType, String currentPath, String currentUrl,String showFile) throws Exception {

        JSONArray list=new JSONArray();//将要返回显示的数据；
        JSONObject sigleData=new JSONObject();//单个数据
        JSONObject arr=new JSONObject();//tree的attributes属性，有type属性；
        JSONArray file=new JSONArray();//中间件下的文件


        if(!(currentType.equals("folder")||currentType.equals("file")||currentType.equals("top")))//加载根目录；
        {
            sigleData=sigleData(currentType,"top",currentPath,currentUrl);
            list.add(sigleData);
//            System.out.println("根目录"+list);
        }
        else
        {
            // 根据中间件路径查询文件
//            System.out.println("进入了目录"+currentPath);
            JSONObject ListJson=new JSONObject();
            JSONArray fileArry= new JSONArray(); //选中的中间件下的文件列表
//           int showSize=4096;//限制展示文件大小，大于showSize则不展示；

            String getFunction="ListDirFiles";
            ListJson=CommonGetData(currentUrl,currentPath,getFunction);

//            System.out.println("接收到的数据2"+ListJson);
            if(ListJson.getIntValue("code")!=-1)
            {
//                System.out.println("进入有数据判断");
                fileArry = ListJson.getJSONArray("file_list");//获取file_list

                for(int i=1;i<fileArry.size()+1;i++)
                {
//                    System.out.println("子节点"+file);
                    JSONObject sigleFile=null;
                    String newString=new String ();
                    String fileName=fileArry.getJSONObject(i-1).getString("filename");
                    newString=currentPath+"/"+fileName;
                    if(fileArry.getJSONObject(i-1).getString("is_dir").equals("true")){
                        sigleFile=sigleData(fileName,"folder",newString,currentUrl);
                    }
                    else if(showFile.equals("true")){
//                        int size=0;
//                        size=Integer.parseInt(fileArry.getJSONObject(i-1).getString("size")) ;
//                        if(size<=showSize)
                        { sigleFile=sigleData(fileName,"file",newString,currentUrl);}
//                        else{continue;}
                    }
                    else {
                        continue;
                    }
                    file.add(sigleFile);
                }
//                System.out.println("当前目录下的文件"+file);
            }
            return file;
        }
        return  list;
    }
    public static JSONObject sigleData( String name,String type,String path,String url)  {//文件目录
        JSONObject sigleData=new JSONObject();//单个数据
        JSONObject arr=new JSONObject();//tree的attributes属性，有type属性；
        arr.put("type", type);
        arr.put("path",path);
        arr.put("url",url);
        sigleData.put("text",name);
        if(type.equals("folder")||type.equals("top"))
        {
            sigleData.put("state", "closed");
        }
        sigleData.put("attributes",arr);
        return sigleData;
    }
    public static JSONObject CommonGetData (String currentUrl,String currentPath,String getFunction)throws Exception{
        String url=new String();//选中的中间件的url
        JSONArray arrays=new JSONArray();
        String jsonString=new String();//请求的paramsJson
        JSONObject paramsJson=new JSONObject();
        JSONObject ListJson=new JSONObject();
        Map<String,String> headerMap = new HashMap<>();
        headerMap.put("HeaderToken","81CF7DDC68CDF393D3FC705050F71029");

        url=currentUrl;
        paramsJson.put("func",getFunction);
        paramsJson.put("filepath",currentPath);


        arrays.add(paramsJson);
        jsonString=paramsJson.toString();
//            System.out.println("请求文件url:"+url);
//            System.out.println("请求文件路径:"+currentPath);
//            System.out.println(jsonString);
//            System.out.println("接收到的数据1"+HttpHelper.post(url, jsonString,headerMap));
        ListJson= JSONObject.parseObject((String) HttpHelper.post(url, jsonString,headerMap)) ;
        return ListJson;
    }
}




